package futbol

import exepcion.PartidoException
import org.junit.Before
import org.junit.Test
import org.junit.Assert
import exepcion.JugadorException

class TesteoSolidario {
	
	Jugador jugador1
	Jugador jugador2
	Jugador jugador3
	Partido partido
	Estandar estandar
	Solidario solidario
	Condicional condicional
	
	@Before
	def init(){
	
	jugador1 = new Jugador
	jugador2 = new Jugador
	jugador3 = new Jugador
	partido = new Partido
	estandar = new Estandar
	solidario = new Solidario
	condicional = new Condicional	
	jugador1.setEstado(estandar) 
	jugador2.setEstado(solidario)
	jugador3.setEstado(condicional)
	}
	
	//testeo agregar un onceavo solidario, debe tirar PartidoException
	@Test (expected = typeof(PartidoException))

	def void testAgregarSolidario(){
		var i = 0	
	
		//agrego 10 veces un mismo jugador para tener 10 que son estandar	
		while(i<10){
			
			partido.agregarJugador(new Jugador(estandar))
			i= i+1
	
		}
	
			//metodo que intenta agregar al onceavo solidario, tiene que reventar
			partido.agregarJugador(jugador2)
	
	}
	
	@Test
	//testeo para probar si saca a un condicional para poner a un solidario
	def void TesteoConSolidarios(){
		var i = 0
		var int cantidadCondicionales
		
	//agrego 6 veces un mismo jugador para tener 6 que son estandar	
		while(i<6){
			
			partido.agregarJugador(new Jugador(estandar))
			i= i+1
	
		}
		
		i=0
		while(i<4){ //lleno lo que queda con condicionales
			partido.agregarJugador(jugador3)
			i=i+1
		}
		
		jugador2.inscribirmeAPartido(partido) //intento meter al jugador solidario al partido
		//compruebo si la cantidad de jugadores aumento
		Assert::assertEquals(10,partido.cantidadDeJugadoresActuales(), 0.01)
		//compruebo si el jugador 2 esta inscripto
		Assert::assertTrue(partido.EstaInscripto(jugador2))
	}
	
	@Test (expected = typeof(PartidoException))
	//testeo para probar pone un solidario cuando hay otro solidario, tiene que reventar
	def void TesteoConSolidarios2(){
		var i = 0
	//agrego 6 veces un mismo jugador para tener 6 que son estandar	
		while(i<6){
			
			partido.agregarJugador(jugador1)
			i= i+1
	
		}
		i=0
		while(i<4){ //lleno lo que queda con solidarios
			partido.agregarJugador(jugador2)
			i=i+1
		}
		
		jugador2.inscribirmeAPartido(partido) //intento meter al jugador al partido
	}
	
}